let arr=['hello',12,true,null,undefined];
//数组的实例方法
// keys values entries 当前变量是迭代器对象
let keys=arr.keys();
let values=arr.values();
let entries=arr.entries();
// console.log(keys,values,entries); 
// 只要实现了迭代器接口 就可以使用for...of遍历
// for(let key of keys){
//   // 返回的数组的索引
//   console.log(key);
// };
// for(let value of values){
//   //数组的每一项元素
//   console.log(value);
// };
// for(let entry of entries){
//   console.log(entry);
// };
// for...of实现的原理是 迭代器的next()方法的调用
// { value: 0, done: false }
// console.log(keys.next());
// console.log(keys.next());
// console.log(keys.next());
// console.log(keys.next());
// console.log(keys.next());
// console.log(values.next());
// console.log(entries.next());
// 遍历迭代器对象
let result; //接收迭代器对象
while(!(result=keys.next()).done){
  console.log(result,'key');
}
while(!(result=values.next()).done){
  console.log(result,'key');
}
while(!(result=entries.next()).done){
  console.log(result,'key');
}
// let [a,b]=10; //报错 10 不是可迭代的对象
// let [a,b,c,d,e]='string';
// console.log(a,b,c,d,e);
// 以前怎样遍历字符串
// let str='world';
// let result=str.split();
// console.log(result);
// let [...a]=str;
// console.log(a);
// for(let key in str){
//   console.log(str[key]);
// };
// for(let key of str){ //for ...of 因为str实现了迭代器接口
//   console.log(key);
// };
// for(let i=0;i<str.length;i++){
//   console.log(str.charAt(i));
// }

